import java.io.Serializable;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JFrame;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JMenu;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.io.Serializable;

import javax.swing.SwingConstants;
/**
 * Fenêtre principale de l'application Bibliothèque avec le menu 
 * @author IUT,  A.Culet 
 * @version 1.0
 */
public class VueMenuBiblio  extends Vue implements Serializable{
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private JFrame frmDocument;

	// ************************************************************************************************************
	// Constructeur
	// ************************************************************************************************************
	public VueMenuBiblio(Controleur controleur) {
		super (controleur);
		this.initialize();
	} // Fin Constructeur
	
	public JFrame getFrame() {
		return frmDocument;	
	}
	/**
	 * Initialize the contents of the frame.
	 */
	private void initialize() {
		frmDocument = new JFrame();
		frmDocument.setTitle("Library Document Manager 3.0");
		frmDocument.setBounds(100, 100, 450, 300);
		frmDocument.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); 
		frmDocument.addWindowListener (new WindowAdapter() {
			public void windowClosing (WindowEvent e) {
			getControleur().fermerVue(VueMenuBiblio.this);
			}
		});
		frmDocument.getContentPane().setLayout(null);
		
		JMenuBar menuBar = new JMenuBar();
		menuBar.setBounds(0, 0, 434, 21);
		frmDocument.getContentPane().add(menuBar);
		
		JMenu mnApplication = new JMenu(" Application ");
		mnApplication.setHorizontalAlignment(SwingConstants.LEFT);
		menuBar.add(mnApplication);
		
		JMenuItem menuItemQuitter = new JMenuItem("Quitter");
		menuItemQuitter.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				getControleur().fermerVue(VueMenuBiblio.this);
				}		
		});
		mnApplication.add(menuItemQuitter);
		
		JMenu mnOuvrage = new JMenu(" Ouvrage ");
		menuBar.add(mnOuvrage);
		
		JMenuItem MenuItemOuv = new JMenuItem("Nouvel ouvrage");
		
		MenuItemOuv.addActionListener(new ActionListener()
		 {
			@Override
			public void actionPerformed(ActionEvent event) {
				//  affichage de la fenetre de saisie d'un ouvrage
				getControleur(). saisirOuvrage() ;}
		});
		
		mnOuvrage.add(MenuItemOuv);

		JMenuItem MenuItemExemp = new JMenuItem("Nouvel exemplaire");
		MenuItemExemp.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				//  affichage de la fenetre de saisie d'un exemplaire
				getControleur(). saisirExemplaire() ;}
		});
		
		mnOuvrage.add(MenuItemExemp);
		
		JMenuItem menuItemConsult = new JMenuItem("Consulter un ouvrage");
		menuItemConsult.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				// affichage de la fenetre de consultation d'un ouvrage
				getControleur(). consulterOuvrage() ;}
		});
		
		mnOuvrage.add(menuItemConsult);
		
		JMenu mnPeriodique = new JMenu(" P\u00E9riodique ");
		menuBar.add(mnPeriodique);
		
		JMenuItem menuItemNouveauPeriodique = new JMenuItem("Nouveau p\u00E9riodique");
		mnPeriodique.add(menuItemNouveauPeriodique);
		menuItemNouveauPeriodique.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				// affichage de la fenetre de consultation d'un ouvrage
			getControleur(). nouveauPeriodique() ;}
		});
		
		JMenuItem mntmNouvelleParution = new JMenuItem("Nouvelle parution");
		mnPeriodique.add(mntmNouvelleParution);
		mntmNouvelleParution.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				// affichage de la fenetre de consultation d'un ouvrage
			getControleur(). nouvelleParution() ;}
		});
		
		JMenuItem mntmNewMenuItemConsulterPeriodique = new JMenuItem("Consulter un p\u00E9riodique");
		mnPeriodique.add(mntmNewMenuItemConsulterPeriodique);
		mntmNewMenuItemConsulterPeriodique.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				// affichage de la fenetre de consultation d'un ouvrage
			getControleur(). consultPeriodique() ;}
		});
		
		JMenu mnRecherche = new JMenu(" Recherche ");
		menuBar.add(mnRecherche);
		
		JMenuItem mntmNewMenuItemRechercheMotCle = new JMenuItem("Par mot(s)-cl\u00E9(s)");
		mnRecherche.add(mntmNewMenuItemRechercheMotCle);
		
		JMenuItem mntmNewMenuItemRechercheAuteur = new JMenuItem("Par auteur");
		mnRecherche.add(mntmNewMenuItemRechercheAuteur);
		
		mntmNewMenuItemRechercheMotCle .addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				// affichage de la fenetre de consultation d'un ouvrage
			getControleur(). rechMotsCles() ;}
		});
		
		mntmNewMenuItemRechercheAuteur.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				// affichage de la fenetre de consultation d'un ouvrage
			getControleur(). rechAuteurs() ;}
		});
		
		frmDocument.setVisible(true);
		
	}
	
	/**
	 * méthode exécutée lorsque la croix de fermeture de la fenêtre a été cliquée
	 */
	public void windowClosing (WindowEvent e) {
		getControleur().fermerVue(VueMenuBiblio.this);
	}
}
